+++ /dev/null
-EXPORTS
- gdk_atom_intern
- gdk_atom_name
- gdk_beep
- gdk_bitmap_create_from_data
- gdk_char_height
- gdk_char_measure
- gdk_char_width
- gdk_char_width_wc
- gdk_color_alloc
- gdk_color_black
- gdk_color_change
- gdk_color_copy
- gdk_color_equal
- gdk_color_free
- gdk_color_hash
- gdk_color_parse
- gdk_color_white
- gdk_colormap_alloc_color
- gdk_colormap_alloc_colors
- gdk_colormap_change
- gdk_colormap_free_colors
- gdk_colormap_get_system
- gdk_colormap_get_system_size
- gdk_colormap_get_visual
- gdk_colormap_new
- gdk_colormap_ref
- gdk_colormap_unref
- gdk_colors_alloc
- gdk_colors_free
- gdk_colors_store
- gdk_cursor_destroy
- gdk_cursor_new
- gdk_cursor_new_from_pixmap
- gdk_debug_flags
- gdk_dnd_init
- gdk_drag_abort
- gdk_drag_begin
- gdk_drag_context_new
- gdk_drag_context_ref
- gdk_drag_context_unref
- gdk_drag_drop
- gdk_drag_find_window
- gdk_drag_get_protocol
- gdk_drag_get_selection
- gdk_drag_motion
- gdk_drag_status
- gdk_drop_finish
- gdk_drop_reply
- gdk_draw_arc
- gdk_draw_gray_image
- gdk_draw_image
- gdk_draw_indexed_image
- gdk_draw_line
- gdk_draw_lines
- gdk_draw_point
- gdk_draw_points
- gdk_draw_polygon
- gdk_draw_rectangle
- gdk_draw_rgb_32_image
- gdk_draw_rgb_image
- gdk_draw_rgb_image_dithalign
- gdk_draw_segments
- gdk_draw_string
- gdk_draw_text
- gdk_draw_text_wc
- gdk_drawable_get_colormap
- gdk_drawable_get_size
- gdk_drawable_get_type
- gdk_drawable_get_visual
- gdk_drawable_set_colormap
- gdk_drawable_set_data
- gdk_error_code
- gdk_error_trap_pop
- gdk_error_trap_push
- gdk_error_warnings
- gdk_event_copy
- gdk_event_free
- gdk_event_get
- gdk_event_get_graphics_expose
- gdk_event_get_time
- gdk_event_handler_set
- gdk_event_peek
- gdk_event_put
- gdk_event_send_client_message
- gdk_event_send_clientmessage_toall
- gdk_events_pending
- gdk_exit
- gdk_flush
- gdk_font_equal
- gdk_font_id
- gdk_font_list_free
- gdk_font_list_new
- gdk_font_load
- gdk_font_ref
- gdk_font_unref
- gdk_font_xlfd_create
- gdk_font_xlfd_free
- gdk_fontset_load
- gdk_free_compound_text
- gdk_free_text_list
- gdk_gc_copy
- gdk_gc_get_values
- gdk_gc_new
- gdk_gc_new_with_values
- gdk_gc_ref
- gdk_gc_set_background
- gdk_gc_set_clip_mask
- gdk_gc_set_clip_origin
- gdk_gc_set_clip_rectangle
- gdk_gc_set_clip_region
- gdk_gc_set_dashes
- gdk_gc_set_exposures
- gdk_gc_set_fill
- gdk_gc_set_font
- gdk_gc_set_foreground
- gdk_gc_set_function
- gdk_gc_set_line_attributes
- gdk_gc_set_stipple
- gdk_gc_set_subwindow
- gdk_gc_set_tile
- gdk_gc_set_ts_origin
- gdk_gc_unref
- gdk_get_display
- gdk_get_show_events
- gdk_get_use_xshm
- gdk_ic_destroy
- gdk_ic_get_attr
- gdk_ic_get_events
- gdk_ic_get_style
- gdk_ic_get_values
- gdk_ic_new
- gdk_ic_set_attr
- gdk_ic_set_values
- gdk_im_begin
- gdk_im_decide_style
- gdk_im_end
- gdk_im_ready
- gdk_im_set_best_style
- gdk_image_bitmap_new
- gdk_image_get
- gdk_image_get_pixel
- gdk_image_new
- gdk_image_new_bitmap
- gdk_image_put_pixel
- gdk_init
- gdk_init_check
- gdk_input_add
- gdk_input_add_full
- gdk_input_exit
- gdk_input_init
- gdk_input_list_devices
- gdk_input_motion_events
- gdk_input_remove
- gdk_input_set_axes
- gdk_input_set_extension_events
- gdk_input_set_key
- gdk_input_set_mode
- gdk_input_set_source
- gdk_input_window_get_pointer
- gdk_key_repeat_disable
- gdk_key_repeat_restore
- gdk_keyboard_grab
- gdk_keyboard_ungrab
- gdk_keyval_from_name
- gdk_keyval_is_lower
- gdk_keyval_is_upper
- gdk_keyval_name
- gdk_keyval_to_lower
- gdk_keyval_to_upper
- gdk_list_visuals
- gdk_mbstowcs
- gdk_null_window_warnings
- gdk_pixmap_colormap_create_from_xpm
- gdk_pixmap_colormap_create_from_xpm_d
- gdk_pixmap_create_from_data
- gdk_pixmap_create_from_xpm
- gdk_pixmap_create_from_xpm_d
- gdk_pixmap_create_on_shared_image
- gdk_pixmap_foreign_new
- gdk_pixmap_new
- gdk_pointer_grab
- gdk_pointer_is_grabbed
- gdk_pointer_ungrab
- gdk_progclass
- gdk_property_change
- gdk_property_delete
- gdk_property_get
- gdk_query_depths
- gdk_query_visual_types
- gdk_rectangle_intersect
- gdk_rectangle_union
- gdk_region_destroy
- gdk_region_empty
- gdk_region_equal
- gdk_region_get_clipbox
- gdk_region_new
- gdk_region_offset
- gdk_region_point_in
- gdk_region_polygon
- gdk_region_rect_in
- gdk_region_shrink
- gdk_region_union_with_rect
- gdk_regions_intersect
- gdk_regions_subtract
- gdk_regions_union
- gdk_regions_xor
- gdk_root_parent
- gdk_screen_height
- gdk_screen_height_mm
- gdk_screen_width
- gdk_screen_width_mm
- gdk_selection_convert
- gdk_selection_owner_get
- gdk_selection_owner_set
- gdk_selection_property
- gdk_selection_property_get
- gdk_selection_send_notify
- gdk_set_locale
- gdk_set_show_events
- gdk_set_use_xshm
- gdk_string_extents
- gdk_string_height
- gdk_string_measure
- gdk_string_to_compound_text
- gdk_string_width
- gdk_text_extents
- gdk_text_extents_wc
- gdk_text_height
- gdk_text_measure
- gdk_text_property_to_text_list
- gdk_text_width
- gdk_text_width_wc
- gdk_threads_enter
- gdk_threads_leave
- gdk_threads_mutex
- gdk_visual_get_best
- gdk_visual_get_best_depth
- gdk_visual_get_best_type
- gdk_visual_get_best_with_both
- gdk_visual_get_best_with_depth
- gdk_visual_get_best_with_type
- gdk_visual_get_system
- gdk_visual_ref
- gdk_visual_unref
- gdk_wcstombs
- gdk_window_add_filter
- gdk_window_at_pointer
- gdk_window_clear
- gdk_window_clear_area
- gdk_window_clear_area_e
- gdk_window_destroy
- gdk_window_foreign_new
- gdk_window_get_deskrelative_origin
- gdk_window_get_children
- gdk_window_get_events
- gdk_window_get_geometry
- gdk_window_get_origin
- gdk_window_get_parent
- gdk_window_get_pointer
- gdk_window_get_position
- gdk_window_get_root_origin
- gdk_window_get_toplevel
- gdk_window_get_toplevels
- gdk_window_get_user_data
- gdk_window_hide
- gdk_window_is_visible
- gdk_window_is_viewable
- gdk_window_lower
- gdk_window_merge_child_shapes
- gdk_window_move
- gdk_window_move_resize
- gdk_window_new
- gdk_window_raise
- gdk_window_register_dnd
- gdk_window_remove_filter
- gdk_window_reparent
- gdk_window_resize
- gdk_window_set_back_pixmap
- gdk_window_set_background
- gdk_window_set_child_shapes
- gdk_window_set_cursor
- gdk_window_set_decorations
- gdk_window_set_events
- gdk_window_set_functions
- gdk_window_set_geometry_hints
- gdk_window_set_group
- gdk_window_set_hints
- gdk_window_set_icon
- gdk_window_set_icon_name
- gdk_window_set_override_redirect
- gdk_window_set_role
- gdk_window_set_static_gravities
- gdk_window_set_title
- gdk_window_set_transient_for
- gdk_window_set_user_data
- gdk_window_shape_combine_mask
- gdk_window_show
- gdk_window_withdraw
- gdk_xid_table_insert
- gdk_xid_table_lookup
- gdk_xid_table_remove
\ No newline at end of file
#include "config.h"
-#define NEW_PROPAGATION_CODE
-
#define USE_DISPATCHMESSAGE
/* Cannot use TrackMouseEvent, as the stupid WM_MOUSELEAVE message
#endif
}
-#ifndef NEW_PROPAGATION_CODE
-
-static GdkWindow *
-key_propagate (GdkWindow *window,
- MSG *xevent)
-{
- gdk_window_unref (window);
- window = ((GdkWindowPrivate *) window)->parent;
- gdk_window_ref (window);
-
- return window;
-}
-
-static GdkWindow *
-pointer_propagate (GdkWindow *window,
- MSG *xevent)
-{
- POINT pt;
-
- pt.x = LOWORD (xevent->lParam);
- pt.y = HIWORD (xevent->lParam);
- ClientToScreen (GDK_DRAWABLE_XID (window), &pt);
- gdk_window_unref (window);
- window = ((GdkWindowPrivate *) window)->parent;
- gdk_window_ref (window);
- ScreenToClient (GDK_DRAWABLE_XID (window), &pt);
- xevent->lParam = MAKELPARAM (pt.x, pt.y);
-
- return window;
-}
-
-#endif /* !NEW_PROPAGATION_CODE */
-
static void
translate_mouse_coords (GdkWindow *window1,
GdkWindow *window2,
GDK_NOTE (EVENTS, g_print ("...new coords are (%d,%d)\n", pt.x, pt.y));
}
-#ifdef NEW_PROPAGATION_CODE
-
static gboolean
propagate (GdkWindow **window,
MSG *xevent,
&& (mask & GDK_BUTTON3_MOTION_MASK)));
}
-#endif
-
static gboolean
gdk_event_translate (GdkEvent *event,
MSG *xevent,
ignore_WM_CHAR = TRUE;
keyup_or_down:
-#ifdef NEW_PROPAGATION_CODE
if (!propagate (&window, xevent,
k_grab_window, k_grab_owner_events, GDK_ALL_EVENTS_MASK,
doesnt_want_key))
break;
event->key.window = window;
-#else
- if (k_grab_window != NULL && !k_grab_owner_events)
- {
- /* Keyboard is grabbed with owner_events FALSE */
- GDK_NOTE (EVENTS, g_print ("...grabbed, owner_events FALSE, "
- "sending to %#x\n",
- GDK_DRAWABLE_XID (k_grab_window)));
- event->key.window = k_grab_window;
- /* Continue with switch statement below */
- }
- else if (((xevent->message == WM_KEYUP
- || xevent->message == WM_SYSKEYUP)
- && !(GDK_WINDOW_WIN32DATA(window)->event_mask & GDK_KEY_RELEASE_MASK))
- || ((xevent->message == WM_KEYDOWN
- || xevent->message == WM_SYSKEYDOWN)
- && !(GDK_WINDOW_WIN32DATA(window)->event_mask & GDK_KEY_PRESS_MASK)))
- {
- /* Owner doesn't want it, propagate to parent. */
- if (((GdkWindowPrivate *) window)->parent == (GdkWindow *) gdk_root_parent)
- {
- /* No parent; check if grabbed */
- if (k_grab_window != NULL)
- {
- /* Keyboard is grabbed with owner_events TRUE */
- GDK_NOTE (EVENTS, g_print ("...undelivered, but grabbed\n"));
- event->key.window = k_grab_window;
- /* Continue with switch statement below */
- }
- else
- break;
- }
- else
- {
- window = key_propagate (window, xevent);
- /* Jump back up */
- goto keyup_or_down;
- }
- }
- else
- event->key.window = window;
-
- g_assert (event->key.window == window);
-#endif
switch (xevent->wParam)
{
case VK_LBUTTON:
}
wm_char:
-#ifdef NEW_PROPAGATION_CODE
if (!propagate (&window, xevent,
k_grab_window, k_grab_owner_events, GDK_ALL_EVENTS_MASK,
doesnt_want_char))
break;
event->key.window = window;
-#else
- /* This doesn't handle the rather theorethical case that a window
- * wants key presses but still wants releases to be propagated,
- * for instance. Or is that so theorethical?
- */
- if (k_grab_window != NULL && !k_grab_owner_events)
- {
- /* Keyboard is grabbed with owner_events FALSE */
- GDK_NOTE (EVENTS,
- g_print ("...grabbed, owner_events FALSE, "
- "sending to %#x\n",
- GDK_DRAWABLE_XID (k_grab_window)));
- event->key.window = k_grab_window;
- }
- else if (!(GDK_WINDOW_WIN32DATA(window)->event_mask & (GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK)))
- {
- /* Owner doesn't want it, propagate to parent. */
- if (((GdkWindowPrivate *) window)->parent == (GdkWindow *) gdk_root_parent)
- {
- /* No parent; check if grabbed */
- if (k_grab_window != NULL)
- {
- GDK_NOTE (EVENTS, g_print ("...undelivered, but grabbed\n"));
- event->key.window = k_grab_window;
- }
- else
- break;
- }
- else
- {
- window = key_propagate (window, xevent);
- /* Jump back up */
- goto wm_char;
- }
- }
- else
- event->key.window = window;
-
- g_assert (event->key.window == window);
-#endif
return_val = !GDK_DRAWABLE_DESTROYED (window);
if (return_val && (event->key.window == k_grab_window
|| (GDK_WINDOW_WIN32DATA(window)->event_mask & GDK_KEY_RELEASE_MASK)))
synthesize_crossing_events (window, xevent);
event->button.type = GDK_BUTTON_PRESS;
-#ifdef NEW_PROPAGATION_CODE
if (!propagate (&window, xevent,
p_grab_window, p_grab_owner_events, p_grab_mask,
doesnt_want_button_press))
break;
event->button.window = window;
-#else
- buttondown:
- mask = ((GdkWindowPrivate *) window)->event_mask;
-
- if (p_grab_window != NULL && !p_grab_owner_events)
- {
- /* Pointer is grabbed with owner_events FALSE */
- GDK_NOTE (EVENTS, g_print ("...grabbed, owner_events FALSE\n"));
-
- mask = p_grab_mask;
- if (!(mask & GDK_BUTTON_PRESS_MASK))
- /* Grabber doesn't want it */
- break;
- else
- event->button.window = p_grab_window;
- GDK_NOTE (EVENTS, g_print ("...sending to %#x\n",
- GDK_DRAWABLE_XID (p_grab_window)));
- }
- else if (!(mask & GDK_BUTTON_PRESS_MASK))
- {
- /* Owner doesn't want it, propagate to parent. */
- if (((GdkWindowPrivate *) window)->parent == gdk_parent_root)
- {
- /* No parent; check if grabbed */
- if (p_grab_window != NULL)
- {
- /* Pointer is grabbed wíth owner_events TRUE */
- GDK_NOTE (EVENTS, g_print ("...undelivered, but grabbed\n"));
- mask = p_grab_mask;
- if (!(mask & GDK_BUTTON_PRESS_MASK))
- {
- /* Grabber doesn't want it either */
- GDK_NOTE (EVENTS, g_print ("...grabber uninterested\n"));
- break;
- }
- else
- event->button.window = p_grab_window;
- GDK_NOTE (EVENTS, g_print ("...sending to %#x\n",
- GDK_DRAWABLE_XID (p_grab_window)));
- }
- else
- break;
- }
- else
- {
- window = pointer_propagate (window, xevent);
- /* Jump back up */
- goto buttondown; /* What did Dijkstra say? */
- }
- }
- else
- event->button.window = window;
-
- g_assert (event->button.window == window);
-#endif
/* Emulate X11's automatic active grab */
if (!p_grab_window)
{
synthesize_crossing_events (window, xevent);
event->button.type = GDK_BUTTON_RELEASE;
-#ifdef NEW_PROPAGATION_CODE
if (!propagate (&window, xevent,
p_grab_window, p_grab_owner_events, p_grab_mask,
doesnt_want_button_release))
goto maybe_ungrab;
event->button.window = window;
-#else
- buttonup:
- mask = GDK_WINDOW_WIN32DATA(window)->event_mask;
-
- if (p_grab_window != NULL && !p_grab_owner_events)
- {
- /* Pointer is grabbed with owner_events FALSE */
- GDK_NOTE (EVENTS, g_print ("...grabbed, owner_events FALSE\n"));
-
- mask = p_grab_mask;
- if (!(mask & GDK_BUTTON_RELEASE_MASK))
- /* Grabber doesn't want it */
- goto maybe_ungrab;
- else
- event->button.window = p_grab_window;
- GDK_NOTE (EVENTS, g_print ("...sending to %#x\n",
- GDK_DRAWABLE_XID (p_grab_window)));
- }
- else if (!(mask & GDK_BUTTON_RELEASE_MASK))
- {
- /* Owner doesn't want it, propagate to parent. */
- if (((GdkWindowPrivate *) window)->parent == gdk_parent_root)
- {
- /* No parent; check if grabbed */
- if (p_grab_window != NULL)
- {
- /* Pointer is grabbed wíth owner_events TRUE */
- GDK_NOTE (EVENTS, g_print ("...undelivered, but grabbed\n"));
- mask = p_grab_mask;
- if (!(mask & GDK_BUTTON_RELEASE_MASK))
- {
- /* Grabber doesn't want it either */
- GDK_NOTE (EVENTS, g_print ("...grabber uninterested\n"));
- goto maybe_ungrab;
- }
- else
- event->button.window = p_grab_window;
- GDK_NOTE (EVENTS,
- g_print ("...sending to %#x\n",
- GDK_DRAWABLE_XID (p_grab_window)));
- }
- else
- break;
- }
- else
- {
- window = pointer_propagate (window, xevent);
- /* Jump back up */
- goto buttonup;
- }
- }
- else
- event->button.window = window;
-
- g_assert (event->button.window == window);
-#endif
event->button.time = xevent->time;
if (window != orig_window)
translate_mouse_coords (orig_window, window, xevent);
}
event->motion.type = GDK_MOTION_NOTIFY;
-#ifdef NEW_PROPAGATION_CODE
if (!propagate (&window, xevent,
p_grab_window, p_grab_owner_events, p_grab_mask,
doesnt_want_button_motion))
break;
event->motion.window = window;
-#else
- mousemotion:
- mask = GDK_WINDOW_WIN32DATA(window)->event_mask;
-
- if (p_grab_window != NULL && !p_grab_owner_events)
- {
- /* Pointer is grabbed with owner_events FALSE */
- GDK_NOTE (EVENTS, g_print ("...grabbed, owner_events FALSE\n"));
-
- mask = p_grab_mask;
- if (!((mask & GDK_POINTER_MOTION_MASK)
- || ((xevent->wParam & (MK_LBUTTON|MK_MBUTTON|MK_RBUTTON))
- && (mask & GDK_BUTTON_MOTION_MASK))
- || ((xevent->wParam & MK_LBUTTON)
- && (mask & GDK_BUTTON1_MOTION_MASK))
- || ((xevent->wParam & MK_MBUTTON)
- && (mask & GDK_BUTTON2_MOTION_MASK))
- || ((xevent->wParam & MK_RBUTTON)
- && (mask & GDK_BUTTON3_MOTION_MASK))))
- /* Grabber doesn't want it */
- break;
- else
- event->motion.window = p_grab_window;
- GDK_NOTE (EVENTS, g_print ("...sending to %#x\n",
- GDK_DRAWABLE_XID (p_grab_window)));
- }
- else if (!((mask & GDK_POINTER_MOTION_MASK)
- || ((xevent->wParam & (MK_LBUTTON|MK_MBUTTON|MK_RBUTTON))
- && (mask & GDK_BUTTON_MOTION_MASK))
- || ((xevent->wParam & MK_LBUTTON)
- && (mask & GDK_BUTTON1_MOTION_MASK))
- || ((xevent->wParam & MK_MBUTTON)
- && (mask & GDK_BUTTON2_MOTION_MASK))
- || ((xevent->wParam & MK_RBUTTON)
- && (mask & GDK_BUTTON3_MOTION_MASK))))
- {
- /* Owner doesn't want it, propagate to parent. */
- if (((GdkWindowPrivate *) window)->parent == gdk_parent_root)
- {
- /* No parent; check if grabbed */
- if (p_grab_window != NULL)
- {
- /* Pointer is grabbed wíth owner_events TRUE */
- GDK_NOTE (EVENTS, g_print ("...undelivered, but grabbed\n"));
- mask = p_grab_mask;
- if (!((p_grab_mask & GDK_POINTER_MOTION_MASK)
- || ((xevent->wParam & (MK_LBUTTON|MK_MBUTTON|MK_RBUTTON))
- && (mask & GDK_BUTTON_MOTION_MASK))
- || ((xevent->wParam & MK_LBUTTON)
- && (mask & GDK_BUTTON1_MOTION_MASK))
- || ((xevent->wParam & MK_MBUTTON)
- && (mask & GDK_BUTTON2_MOTION_MASK))
- || ((xevent->wParam & MK_RBUTTON)
- && (mask & GDK_BUTTON3_MOTION_MASK))))
- {
- /* Grabber doesn't want it either */
- GDK_NOTE (EVENTS, g_print ("...grabber uninterested\n"));
- break;
- }
- else
- event->motion.window = p_grab_window;
- GDK_NOTE (EVENTS,
- g_print ("...sending to %#x\n",
- GDK_DRAWABLE_XID (p_grab_window)));
- }
- else
- break;
- }
- else
- {
- window = pointer_propagate (window, xevent);
- /* Jump back up */
- goto mousemotion;
- }
- }
- else
- event->motion.window = window;
-#endif
event->motion.time = xevent->time;
if (window != orig_window)
translate_mouse_coords (orig_window, window, xevent);